VScode中用jdk命令,将普通工程生成jar包 | 您所在的位置:网站首页 › vs code maven打jar包 › VScode中用jdk命令,将普通工程生成jar包 |
文章目录
用jdk命令打包带有main函数(单个类)带有main函数(涉及多个类)类库打包和调用(单个类)
使用maven打包
用jdk命令打包
项目中不会这么去打包,只是为了学习和理解。 带有main函数(单个类)main函数: public class Hello { public static void main(final String[] args) { System.out.println("hello"); } }终端通过:javac Hello.java生成Hello.class文件。 项目结构: 编译成字节码Hello.java已省略步骤。 将Hello.class文件打成jar包: PS C:\AAAAAProj\VSCODE\Study_Java\src> jar -cvf my.jar Hello.classcvf的意思可能是:create verbose files https://www.zybang.com/question/62632e26fc216e043a56492dfe77c503.html 得到: 此时运行my.jar会出错(奇怪字符): 出错原因: java运行jar命令提示没有主清单属性: https://www.cnblogs.com/linjian/p/4785530.html 解决方法: 需要用解压缩工具(比如360压缩)打开my.jar,在里面添加“主类”的名称: META-INF文件详解: https://blog.csdn.net/weixin_42248302/article/details/100886727 编辑后保存,并替换到原my.jar中。 此时再执行运行的命令:java -jar my.jar 正常结果: 带有main函数(涉及多个类)初始结构: demo.entry.Hello.java(注意package): package demo.entry; import demo.tool.Person; public class Hello { public static void main(String[] args) { Person person = new Person(); person.say(); } }demo.tool.Person.java: package demo.tool; public class Person { public void say(){ System.out.println("Hello, I am a boy."); } }编译成字节码: 直接编译有main函数的那个类,会自动编译其引用的Person类: PS G:\AAWorkbench\VSCODE\Study_Java> javac ./demo/entry/Hello.java得到: 把demo文件夹打成jar包(可以把里面的java文件删除,只保留class文件): PS G:\AAWorkbench\VSCODE\Study_Java> jar -cvf d.jar demo在demo同目录中产生一个d.jar文件,同样地用360压缩,修改里面的MANIFEST.MF文件(注意Hello前面要加包名): 在d.jar中,class文件是按照包名有序排放在目录中的:
运行: PS G:\AAWorkbench\VSCODE\Study_Java> java -jar d.jar 类库打包和调用(单个类)将上面中的demo.tool.Person生成一个jar包,供Hello调用。 将demo.entry.Hello移除,仅剩下demo.tool.Person,将其打包: PS G:\AAWorkbench\VSCODE\Study_Java> jar -cvf demotool.jar demo在新的工程中调用demotool.jar,并成功运行: import demo.tool.Person; public class Hello { public static void main(String[] args) { Person person = new Person(); person.say(); } } 使用maven打包前面使用jdk打jar包时,需要手动用解压缩工具,在MANIFEST.MF中添加Main-Class。 而使用maven打包则更简便。 后续会用maven试一下。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |